import { defineStore } from 'pinia'

export const useAuthStore = defineStore('auth', {
  // state 返回对象，包含应用程序的所有状态
  state: () => ({
    token: null, // 存储认证 token
    isLoggedIn: false // 用户是否登录
  }),
  // getters 用以从 state 派生新的状态
  getters: {
    // 可选，如果你需要快速访问 token 的状态
    getToken: (state) => state.token,
    isAuthenticated: (state) => state.isLoggedIn && state.token
  },
  actions: {
    // 登陆用户并保存 token
    setToken (newToken: any) {
      this.token = newToken // 保存token
      this.isLoggedIn = true // 登陆用户
    },
    // 登出用户并清除 token
    clearToken () {
      this.token = null
      this.isLoggedIn = false
    }
  },
  // 开启持久化
  persist: {
    // 你也可以设置更详细的配置，例如指定存储方式为 localStorage 或者 sessionStorage
    enabled: true,
    strategies: [
      {
        storage: localStorage // 或者 sessionStorage

        // 您可以在此处添加其他配置项, 如序列化/反序列化方法等
      }
    ]
  }
})
